#pragma once
#ifdef XOLIBCPP_EXPORTS
#define XOLIBCPP_API __declspec(dllexport)
#else
#define XOLIBCPP_API __declspec(dllimport)
#endif
/* Copyright(c) 1998-2012, Arnaud Colin
 * All rights reserved.
 *
 * Licence GNU GPL version 3
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   -> Redistributions of source code must retain the above copyright
 *      notice, this list of conditions and the following disclaimer.
 *
 *   -> Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in the
 *      documentation and/or other materials provided with the distribution.
 */

#include <string>
#include <stdexcept>

class XmlDocument
{
};



class XOLIBCPP_API ILog
{
public:
	virtual void Write() = 0;
};
class XOLIBCPP_API IActionLog
{
public:
	virtual void Write(ILog* Log) = 0;
};


template<typename T>
class XOLIBCPP_API CLogger : public ILog
{
public:
	CLogger(void);
	~CLogger(void);

	void Write();

	inline static CLogger<T>* Open()
	{
		return new cLogger<T>();
	}
	
		
};

